package com.zxj.system.service.exam;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zxj.common.core.domain.vo.PageVO;
import com.zxj.system.domain.exam.dto.ExamAddDTO;
import com.zxj.system.domain.exam.dto.ExamEditDTO;
import com.zxj.system.domain.exam.dto.ExamQueryPageDTO;
import com.zxj.system.domain.exam.dto.ExamQuestAddDTO;
import com.zxj.system.domain.exam.entity.Exam;
import com.zxj.system.domain.exam.vo.ExamAddVO;
import com.zxj.system.domain.exam.vo.ExamDetailVO;
import com.zxj.system.domain.exam.vo.ExamVO;

/**
 * <p>
 * 竞赛表结构 服务类
 * </p>
 *
 * @author zxj2022
 * @since 2024-12-29
 */
public interface IExamService extends IService<Exam> {

    /**
     * 分页查询竞赛列表
     * @param examQueryPageDTO
     * @return
     */
    PageVO<ExamVO> pageQuery(ExamQueryPageDTO examQueryPageDTO);

    /**
     * 添加竞赛基本信息
     * @param examAddDTO 竞赛基本信息
     * @return 竞赛id
     */
    ExamAddVO add(ExamAddDTO examAddDTO);

    /**
     * 添加竞赛题目
     * @param examQuestAddDTO
     * @return
     */
    boolean questionAdd(ExamQuestAddDTO examQuestAddDTO);

    /**
     * 删除竞赛题目
     * @param examId 竞赛id
     * @param questionId 题目id
     * @return
     */
    boolean questionDelete(Long examId, Long questionId);

    /**
     * 依据ID获取竞赛详情
     * @param examId 竞赛id
     * @return 竞赛详情
     */
    ExamDetailVO detail(Long examId);

    /**
     * 编辑竞赛基本信息
     * @param examEditDTO
     * @return
     */
    int edit(ExamEditDTO examEditDTO);

    /**
     * 删除竞赛
     * @param examId 竞赛id
     * @return
     */
    int delete(Long examId);

    /**
     * 发布竞赛
     * @param examId 竞赛id
     * @return
     */
    int publish(Long examId);

    /**
     * 取消发布竞赛
     * @param examId 竞赛id
     * @return
     */
    int cancelPublish(Long examId);
}
